package cn.gson.boot.model.service;


import cn.gson.boot.common.MD5Util;
import cn.gson.boot.model.dao.EmpDao;
import cn.gson.boot.model.mapper.EmpMapper;
import cn.gson.boot.model.pojos.Dept;
import cn.gson.boot.model.pojos.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
public class EmpService {
    @Autowired
    EmpMapper empMapper;
    @Autowired
    EmpDao empDao;
    //查询所有员工
    public List<User> selectAllEmp(String search){
        return empMapper.findAllEmp(search);
    }

    //查询所有部门
    @Transactional(transactionManager = "transactionManager")
    public List<Dept> findAllDepts() {
        return empMapper.findAllDept();
    }
    // 根据部门id来查询次部门下所有的员工
    public List<User> findEmpByDept(Integer deptId){
        return empMapper.findEmpByDept(deptId);
    }

    @Autowired
    EmpRoleService empRoleService;

    //新增用户
    public void saveEmp(User user){
        if(user.getEmpId() == 0){
            user.setEmpPwd(MD5Util.string2MD5("123456"));//默认密码123456
            user.setEmpImg("upload/dlu3.jpg");//新增用户时给一张默认的图片
        }
        User save = empDao.save(user);
        System.err.println("忆有hoid："+save.getEmpId());
        System.err.println("忆有hoid："+save.getEmpName());
        empRoleService.saveRole(save.getEmpId(),user.jsList);
    }

    //（逻辑）删除用户
    public void yichuEmp(Integer empid) {
        empDao.yichuEmp(empid);
    }


    //根据员工姓名来查询员工
    public User selectEmpByEmpName(String empName){
        return empMapper.selectEmpByEmpName(empName);
    }

    //根据员工身份证来查询员工
    public User selectEmpByIdCard(String idCard){
        return empMapper.selectEmpByIdCard(idCard);
    }
    //根据员工电话来查询员工
    public User selectEmpByEmpPhone(String empPhone){
        return empMapper.selectEmpByEmpPhone(empPhone);
    }

    //根据部门id查询此部门的信息
    public Dept selectDeptBydeptId(Integer deptId){
        return empMapper.selectDeptBydeptId(deptId);
    }

    //根据员工id查找员工信息
    public User selectEmpByEmpId(Integer empId){
        return empMapper.selectEmpByEmpId(empId);
    }


    //修改员工图像
    public void updteEmpImgByEmpId(String imgsrc,Integer empId){
        empDao.updteEmpImgByEmpId(imgsrc,empId);
    }

    //修改员工密码
    public void updteEmpPasswordByEmpId(String empPwd,Integer empid){
        empDao.updteEmpPasswordByEmpId(empPwd,empid);
    }
}
